<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
        <script>

            /* 
                对象中存储属性的区域实际有两个：
                    1. 对象自身
                        - 直接通过对象所添加的属性，位于对象自身中
                        - 在类中通过 x = y 的形式添加的属性，位于对象自身中

                    2. 原型对象（prototype）
                        - 对象中还有一些内容，会存储到其他的对象里（原型对象）
                        - 在对象中会有一个属性用来存储原型对象，这个属性叫做__proto__
                        - 原型对象也负责为对象存储属性，
                            当我们访问对象中的属性时，会优先访问对象自身的属性，
                            对象自身不包含该属性时，才会去原型对象中寻找
                        - 会添加到原型对象中的情况：
                            1. 在类中通过xxx(){}方式添加的方法，位于原型中
                            2. 主动向原型中添加的属性或方法

            */

            class Person {
                name = "孙悟空"
                age = 18

                // constructor(){
                //     this.gender = "男"
                // }

                sayHello() {
                    console.log("Hello，我是", this.name)
                }
            }

            const p = new Person()

            // p.address = "花果山"
            // p.sayHello = "hello"

            console.log(p.sayHello)
        </script>
    </head>
    <body></body>
</html>
